home *** CD-ROM | disk | FTP | other *** search
-
- /* dump.c core style dump of a file */
-
- /* usage: A>DUMP B:BLIP.O */
-
-
- char buffer[4096];
-
- main(argc,argv)
- int argc;
- char *argv[]; {
- unsigned i,numin,tot,file;
- char *cfrom;
-
- if (argc < 2) {
- puts("Missing Filename\n");
- }
-
- tot=0;
- if ((file=open(argv[1],0)) == -1) {
- puts("Cannot Open ");
- puts(argv[1]);
- exit(1);
- }
-
- /* read and dump 4k at a time */
-
- do {
- numin=read(file,buffer,4096);
- if (numin == -1) {
- puts("Cannot Read ");
- puts(argv[1]);
- exit(1);
- }
- cfrom=0;
- while (cfrom < numin) {
-
- /* print the offset in hex */
-
- ohw(cfrom+tot);
- putchar(' ');
-
- /* print 16 bytes in hex */
-
- for (i=0; i < 16; i++) {
- putchar(' ');
- ohb(buffer[cfrom++]);
- }
- cfrom-=16;
- puts(" *");
-
- /* print the bytes in ascii */
-
- for (i=0; i < 16; i++) {
- putchar((buffer[cfrom] >= ' ' && buffer[cfrom] < 0x7f)
- ? buffer[cfrom]: '.');
- cfrom++;
- }
- puts("*\n");
- }
- tot+=numin;
- }
- while (numin == 4096);
- }
-
- /* print a word in hex */
-
- ohw(wrd)
- unsigned wrd; {
- ohb(wrd>>8);
- ohb(wrd);
- }
-
- /* print a byte in hex */
-
- ohb(byt)
- char byt; {
- onib(byt>>4);
- onib(byt);
- }
-
- /* print a nibble as a hex character */
-
- onib(nib)
- char nib; {
-
- nib&=15;
- putchar((nib >= 10) ? nib-10+'A': nib+'0');
- }
-